﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TestConsole.Practice4
{
    // 실습 목표
    // 반복문 개념 이해하기
    // do while 문 사용하기
    // 종료값 이용 반복 이해하기
 
    // 문제 
    // 한 대학생이 이번 학기에 프로그래밍 과목을 수강하고 있다. 이 과목의 성적 평가 요소는 출석,
    // 과제, 수시 시험, 중간시험과 기말시험이다. 각 평가 요소의 반영률은 출석 10%, 과제 40%, 수시시험 10%,
    // 중간시험 20%이다. 이 과목의 학점은 다음 기준에 의해 부여 된다.
    // 
    //                     ====================================
    //                          총 점       │      학 점
    //                     ====================================
    //                        90 ~ 100      │       A
    //                     ------------------------------------
    //                        80 ~  89      │       B
    //                     ------------------------------------
    //                        70 ~  79      │       C
    //                     ------------------------------------
    //                        60 ~  69      │       D
    //                     ------------------------------------
    //                         0 ~  59      │       F
    //                     ====================================
    //
    // 각 과목에 대해 과목명과 평가 요소들의 점수들을 입력 받아 총점을 계산하고 학점을 부여한 다음에
    // 평균 평점을 계산하는 프로그램을 작성하라. 이 문제는 실습과제 3.2를 확장한 것으로서 과제 3.2의
    // 프로그램을 반복문을 사용하여 수정하면 된다.
    public class Practice4_3
    {
        // 모범 출력
        //
        // 과목의 이름을 입력하세요: 영작문
        // 출석 점수를 입력하세요: 94
        // 과제 점수를 입력하세요: 88
        // 수시시험 점수를 입력하세요: 82
        // 중간시험 점수를 입력하세요: 75
        // 기말시험 점수를 입력하세요: 97
        // 영작문 과목의 총점: 87.20000000000002
        // 영작문 과목의 학점: B
        // 계속하기를 원하세요? 그렇다면 y를 아니면 n를 입력하세요:y
        // 과목의 이름을 입력하세요: 프로그래밍
        // 출석 점수를 입력하세요: 96
        // 과제 점수를 입력하세요: 94
        // 수시시험 점수를 입력하세요: 87
        // 중간시험 점수를 입력하세요: 95
        // 기말시험 점수를 입력하세요: 98
        // 프로그래밍 과목의 총점: 94.5
        // 프로그래밍 과목의 학점: A
        // 계속하기를 원하세요? 그렇다면 y를 아니면 n를 입력하세요:y
        // 과목의 이름을 입력하세요: 이산수학
        // 출석 점수를 입력하세요: 91
        // 과제 점수를 입력하세요: 82
        // 수시시험 점수를 입력하세요: 76
        // 중간시험 점수를 입력하세요: 64
        // 기말시험 점수를 입력하세요: 77
        // 이산수학 과목의 총점: 77.70000000000002
        // 이산수학 과목의 학점: C
        // 계속하기를 원하세요? 그렇다면 y를 아니면 n를 입력하세요:y
        // 과목의 이름을 입력하세요: 컴퓨터구조
        // 출석 점수를 입력하세요: 98
        // 과제 점수를 입력하세요: 80
        // 수시시험 점수를 입력하세요: 85
        // 중간시험 점수를 입력하세요: 95
        // 기말시험 점수를 입력하세요: 96
        // 컴퓨터구조 과목의 총점: 88.5
        // 컴퓨터구조 과목의 학점: B
        // 계속하기를 원하세요? 그렇다면 y를 아니면 n를 입력하세요:n
        // 평점: 3.0

        // 주의: 위에서 '입력하세요' 다음에 입력된 값들은 사용자의 입력이다.
        public static void ComputeGPA()
        {
            // 각 과목의 이름과 평가 요소들의 점수들을 저장하는 변수들을 선언한다.
            String coursename;
            int attendscore;
            // 여기에 코드를 삽입
            string flag;
            // 각 과목의 총점과 학점 그리고 평점을 저정하는 변수들과 그 밖에 필요한
            // 변수들을 선언한다.
            // 여기에 코드를 삽입

            // 사용자가 계속하기를 원한다면 다음을 반복한다.
            do
            {
                // 사용자로부터 과목의 이름과 각 평가 요소의 점수를 한 번에 하나씩
                // 입력하라고 요청한다. 그리고 입력된 점수를 읽는다.
                Console.Write("과목의 이름을 입력하세요:\t");
                coursename = Console.ReadLine();
                Console.Write("출석 점수를 입력하세요:\t\t");
                // 여기에 코드를 삽입

                // 과목의 총점을 계산하고 출력한다.
                // 여기에 코드를 삽입

                // 과목의 학점을 결정한다.
                // 여기에 코드를 삽입

                // 과목의 이름과 학점을 출력한다.
                // 여기에 코드를 삽입

                // 학점들의 누계를 계산한다.
                // 여기에 코드를 삽입

                // 사용자가 계속하기를 원하는 지를 예(y) 혹은 아니오(n)로 입력하라고
                // 요청한다. 그리고 입력된 값을 읽는다.
                Console.Write("계속하기를 원하세요? ");
                Console.Write("그렇다면 y를 아니면 n를 입력하세요:");
                flag = Console.ReadLine();
            } while (flag.Equals("y"));

            // 평균 평점을 계산하고 출력한다.
            // 여기에 코드를 삽입
        }
        // 힌트
        // 1. 입력된 점수들에 따른 총점과 학점을 계산하여 출력한다.
        // 2. 다음으로 사용자가 온도 변환을 계속하기를 원하는 지를 'y(yes)' 혹은 'n(no)'로 입력하
        //    라는 메시지를 출력한다. 'y'가 입력되면 지금까지 언급한 과정을 반복한다. 'n'가 입력되
        //    면 반복문 밖으로 나간다.
        // 3. 프로그램의 결과가 맞는지를 확인하기 위해 여러 개의 다른 입력 값들을 사용하여 프로그램을 
        //    철저하게 시험하라.
    }
}
